home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / fontsele.d < prev    next >
Text File  |  1997-10-26  |  5KB  |  126 lines

  1. DEFINITION MODULE FontSelect;
  2.  
  3. (* Modul:               FontSelect                              *
  4.  * Autor:               Dirk Steins                             *
  5.  * erstellt am:         11.10.91                                *
  6.  * letzte Žnderung am:  20.07.93                                *
  7.  * Version:             0.5                                     *
  8.  * Interne Version:     V#015                                   *
  9.  * Kommentar:           Fontauswahl fr Cat und CatPutz         *
  10.  *                      umbenannt zu CatPutz2                   *
  11.  * 
  12.  * Es wird eine eigene Fontliste aufgebaut, und aus dieser kann man 
  13.  * dann die Fonts ausw„hlen.
  14.  * Die Ressource fr beide muž gleich sein, da ich nicht alle 
  15.  * Konstanten anpassen will. Also mssen zumindest die symbolischen 
  16.  * Namen alle vorhanden sein.
  17.  *
  18.  *==============================================================*
  19.  * Datum    Version     Žnderung                                *
  20.  *==============================================================*
  21.  *                                                              *
  22.  * 11.10.91 0.1         Modul erstellt, da starke Žnderungen    *
  23.  *                      in MagicLib.                            *
  24.  *                                                              *
  25.  * 20.7.93  0.5         Ab dieser Version ist die Ressource     *
  26.  *                      im Modul integriert.                    *
  27.  *                                                              *
  28.  *==============================================================*)
  29.  
  30. FROM    SYSTEM  IMPORT ADDRESS;
  31.  
  32. FROM    MagicSys        IMPORT  sINTEGER, sBITSET;
  33.  
  34. TYPE tFontinfo = RECORD
  35.                   id:     sINTEGER;     (* Font-ID *)
  36.                   name:   ARRAY [0..32] OF CHAR;  (* Name des Fonts *)
  37.                   chw:    sINTEGER;     (* Zeichenbreite *)
  38.                   chh:    sINTEGER;     (* Zeichenh”he *)
  39.                   boxw:   sINTEGER;     (* Zellenbreite *)
  40.                   boxh:   sINTEGER;     (* Zellenh”he *)
  41.                   point:  sINTEGER;     (* aktuelle Gr”že *)
  42.                   min:    sINTEGER;     (* Minimale Gr”že des Fonts *)
  43.                   max:    sINTEGER;     (* Maximale Gr”že des Fonts *)
  44.                   mono:   BOOLEAN;      (* TRUE, wenn Monospaced *)
  45.                   fsm:    BOOLEAN;      (* TRUE, wenn FSM-Font *)
  46.                  END;
  47.  
  48.  
  49. (* Wenn noch keine Fonts fr die Workstation geladen sind, wird dieses von den Funktionen
  50.  * automatisch beim ersten Aufruf durchgefhrt.
  51.  * Vor dem Schliežen der Workstation muž UnloadFonts aufgerufen werden, 
  52.  * damit die Workstation wieder aus der Fontliste entfernt werden kann.
  53.  *)
  54.  
  55. PROCEDURE DoSelectFont (handle : sINTEGER; monoFonts : BOOLEAN; 
  56.                         VAR fontId, fontSize : sINTEGER): BOOLEAN;
  57.  (* Fhrt kompletten Dialog durch. 
  58.   * handle : VDI-Handle der Workstation;
  59.   * monoFonts: Nur monospaced-Fonts werden angezeigt.
  60.   *)
  61.  
  62. PROCEDURE FontNumber (handle : sINTEGER) : sINTEGER;
  63. (* Anzahl der zur Verfgung stehenden Fonts *)
  64.  
  65. PROCEDURE FontInfo (handle,                     (* VDI-Handle *)
  66.                     font : sINTEGER;            (* Font-ID    *)
  67.                     VAR info : tFontinfo);
  68. (* Info ber den Font. Ersetzt die gleichnamige Prozedur aus mtFonts *)
  69.  
  70. PROCEDURE LoadFonts (handle : sINTEGER; VAR num : sINTEGER);
  71. (* Fast wie mtFonts.LoadFonts, nur wird die Fontliste 
  72.  * nicht zurckgegeben. Die wird intern verwaltet.
  73.  *)
  74.  
  75. PROCEDURE UnloadFonts (handle : sINTEGER);
  76. (* L”scht die Fonts wieder aus der Liste *)
  77.  
  78. PROCEDURE FontActive (handle : sINTEGER) : sINTEGER;
  79. (* Liefert die ID des momentan aktiven Fonts.
  80.  *)
  81.  
  82. PROCEDURE FontSelect (handle : sINTEGER; font : sINTEGER);
  83. (* Selektion eines Fonts 
  84.  *)  
  85.  
  86. (* Die folgenden Funktionen rufen direkt die entsprechenden
  87.  * Funktionen aus mtFonts auf. 
  88.  * Sind nur mit hier drin, damit man nicht zwei Font-Module
  89.  * importieren muž!
  90.  *)
  91.  
  92. PROCEDURE FontSize (handle, size: sINTEGER;
  93.                     VAR cw, ch, bw, bh: sINTEGER): sINTEGER;
  94. (* Bestimmung der Gr”že des aktuellen Fonts in POINTS.
  95.  * cw = Zeichenbreite
  96.  * ch = Zeichenh”he
  97.  * bw = Breite der Zeichenbox
  98.  * bh = H”he der Zeichenbox
  99.  *)
  100.  
  101. PROCEDURE SetFont (handle : sINTEGER; VAR font, fontSiz : sINTEGER; 
  102.                    getBoldWidth : BOOLEAN;
  103.                    VAR mono, fsm : BOOLEAN; VAR boxw, boxh : sINTEGER);
  104. (* Diese Prozedur hierhin verlagert. Setzt den Font und die Gr”že und
  105.  * gibt die Ausmaže zurck und die Attribute mono und fsm.
  106.  * getBoldWidth: Bei einigen (auch unproportionalen) Zeichens„tzen
  107.  * ist die Breite eines fetten Zeichens anders als die eines normalen
  108.  * Zeichens. In einigen F„llen ist es deshalb sinnvoll, die Breite
  109.  * des fetten Zeichens zu nehmen (z.B. formatierte Ausgabe in einer Liste)
  110.  *)
  111.  
  112. (*
  113. PROCEDURE FontDefsize (handle: sINTEGER);
  114. (* Stellt die Max-Gr”že DIV 2 des aktuellen Fonts ein. Dies ist in der
  115.  * Regel der Default-Size des Fonts.  
  116.  * Beim Systemfont wird die Gr”že entsprechend der Aufl”sung gesetzt. 
  117.  *)
  118.  
  119. PROCEDURE FontRotate (handle, angle: sINTEGER): sINTEGER;
  120. (* Winkel einstellen, in dem der Font ausgegeben wird. Bei Bitmap-
  121.  * Fonts sind hier nur 0, 90, 180 und 270 Grad m”glich.
  122.  * angle ist in Zehntel Grad anzugeben (1800 fr 180 Grad)
  123.  *)
  124. *)
  125.  
  126. END FontSelect.